package com.family.pedigree.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 个人信息表
 * </p>
 *
 * @author forever
 * @since 2025-01-18
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("family_user_info")
public class FamilyUserInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 节点ID
     */
    @NotNull(message = "节点ID不能为空")
    private Long nodeId;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空")
    private String name;

    /**
     * 曾用名
     */
    private String formerName;

    /**
     * 性别
     */
    @NotBlank(message = "性别不能为空")
    private String gender;

    /**
     * 年龄
     */
    @NotNull(message = "年龄不能为空")
    private Integer age;

    /**
     * 生日（年月日）
     */
    @NotNull(message = "生日（年月日）不能为空")
    private LocalDate birthday;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 电话号码
     */
    private String phone;

    /**
     * 户籍地址
     */
    @NotBlank(message = "户籍地址不能为空")
    private String permanentAddress;

    /**
     * 居住地址
     */
    private String residentialAddress;

    /**
     * 政治面貌
     */
    @NotBlank(message = "政治面貌不能为空")
    private String politicsFace;

    /**
     * 微信号码
     */
    private String wxNumber;

    /**
     * 大学
     */
    private String collage;

    /**
     * 教育背景（0-小学 1-初中 2-高中 3-大专 4-本科 5-硕士 6-博士 7-其他）
     */
    private Integer education;

    /**
     * 大学专业
     */
    private String major;

    /**
     * 是否死亡（0-在世 1-去世）
     */
    private String isDeath;

    /**
     * 毕业日期
     */
    private LocalDate graduationDate;

    /**
     * 个人履历
     */
    private String personalRecord;

    /**
     * 个人特长
     */
    private String personalSpecialty;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 修改人
     */
    private String updateBy;

    /**
     * 创建日期
     */
    private LocalDateTime createTime;

    /**
     * 修改日期
     */
    private LocalDateTime updateTime;


}
